package com.solution;

/**
 * 125. 验证回文串
 * 给定一个字符串，验证它是否是回文串，只考虑字母和数字字符，可以忽略字母的大小写。
 *
 * 说明：本题中，我们将空字符串定义为有效的回文串。
 *
 * 示例 1:
 *
 * 输入: "A man, a plan, a canal: Panama"
 * 输出: true
 * 示例 2:
 *
 * 输入: "race a car"
 * 输出: false
 *
 * @author LiYongKui
 * @version 1.0
 * @date 2021/4/6 12:15
 */
public class Solution0125 {

    public static boolean isPalindrome(String s) {
        s = s.toLowerCase();
        char[] chars = s.toCharArray();
        int left = 0,right =chars.length-1;
        while(left < right){
            if(!Character.isLetterOrDigit(chars[left])){
                left++;
            } else if(!Character.isLetterOrDigit(chars[right])){
                right--;
            } else if(chars[left] != chars[right]){
                return false;
            } else {
                left++;
                right--;
            }
        }
        return true;
    }

    public static void main(String[] args) {
        String s = "A man, a plan, a canal: Panama";
        System.out.println(isPalindrome(s));
    }
}
